<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>ONLYOFFICE使用方法</title>
    <!-- 引入外部jquery文件 -->
    <script type="text/javascript" src="https://lib.sinaapp.com/js/jquery/2.0.2/jquery-2.0.2.min.js"></script>
    <!-- 引入外部JavaScript文件 -->
    <script type="text/javascript" src="http://192.168.33.129:9500/web-apps/apps/api/documents/api.js"></script>
    <style>
      html {
        height: 100%;
        width: 100%;
        padding: 0;
        margin: 0;
      }

      body {
        height: 100%;
        width: 100%;
        padding: 0;
        margin: 0;
      }
    </style>
  </head>

  <body>
    <div id="placeholder" class="nav" style="width: 100%; height: 100%"></div>
    <script language="javascript" type="text/javascript">
      var key = "20220722"
      var fileId = 1055
      var title = "测试docx文档读取.docx"
      var downloadUrl = "http://192.168.1.25:7007/wrcp-file/transfer/file/task/download/"+fileId+"/1.doc"
      var createUrl = "http://192.168.1.25:7007/wrcp-file/office/create?type=doc&name=demo.doc"
      var callbackUrl = "http://192.168.1.25:7007/wrcp-file/office/callback?id=" + fileId
      var logoUrl = "http://192.168.1.25:7007/wrcp-file/office/download/189"
      var historyListUrl = "http://192.168.1.25:7007/wrcp-file/office/history/list?fileId=" + fileId
      var historyResponse = {};
      var onRequestHistoryData = function(event) {
        console.log("设置历史文档:" + JSON.stringify(historyResponse))
        var version = event.data;
        var changes = [];
        changes = historyResponse.changes;
        console.log("历史文档信息:" + JSON.stringify(changes))
        var url = "";
        var key = "";
        var size = changes.length;
        for (var i = 0; i < size; i++) {
          var change = changes[i];
          if (change.version === version) {
            url = change.url;
            key = change.docKey;
            break;
          }
        }
        console.log("url:" + url + ",key:" + key + ",version:" + version)
        docEditor.setHistoryData({
          changesurl: url,
          key: key,
          previous: {
            key: key,
            url: url,
          },
          url: url,
          version: version,
        });
      };
      var onRequestHistoryClose = function() {
        document.location.reload();
      }
      var onRequestHistory = function(event) {
        console.log("获取文档历史数据");
        console.log(JSON.stringify(event));
        $.ajax({
          url: historyListUrl,
          success: function(result) {
            historyResponse = result.datas;
            console.log("成功:" + JSON.stringify(result.datas));
            var data = historyResponse.histories;
            console.log(data.length);
            docEditor.refreshHistory({
              currentVersion: data.length,
              history: data
            })
          },
          error: function(result) {
            console.log("错误:" + JSON.stringify(result));
          },
        });
      }
      var config = {
        "document": {
          "documentType": "text",
          "width": "100%",
          "height": "100%",
          "fileType": "doc",
          "key": key,
          "title": title,
          "url": downloadUrl,
          "info": {
            "owner": "王重阳", //文件创建者名称
            "sharingSettings": [ //文件对应用户的操作权限配置
              {
                "permissions": "Full Access", // 完全操作权限-Full Access,只读权限-Read Only 拒绝访问-Deny Access
                "user": "林朝英" //有次权限的用户
              },
              {
                "permissions": "Read Only",
                "user": "周伯通"
              }
            ],
            "uploaded": "2022-08-04 3:46 PM" //文件创建时间
          },
          //文档权限参数
          "permissions": {
            "edit": true, //（文件是否可以编辑，false时文件不可编辑）
            "fillForms": true, //定义是否能在文档中填充表单
            "print": false, //定义文档是否能打印
            "review": false, //第一是否显示审阅文档菜单
            "comment": true, //定义是否可以注释文档。如果注释权限设置为“ true”，则文档侧栏将包含“注释”菜单选项；只有将mode参数设置为edit时才生效，默认值与edit参数的值一致。
            "copy": true, //是否允许您将内容复制到剪贴板。默认值为true。
            "download": true, //定义是否可以下载文档或仅在线查看或编辑文档。如果下载权限设置为“false”下载为菜单选项将没有。默认值为true。
            "modifyContentControl": true, //定义是否可以更改内容控件设置。仅当mode参数设置为edit时，内容控件修改才可用于文档编辑器。默认为true。
            "modifyFilter": true, //定义过滤器是否可以全局应用（true）影响所有其他用户，或局部应用（false），即仅适用于当前用户。如果将mode参数设置为edit，则过滤器修改仅对电子表格编辑器可用。默认值为true。
            "chat": true,//定义“聊天”菜单按钮是显示还是隐藏；请注意，如果您隐藏“聊天”按钮，则相应的聊天功能也将被禁用。默认值为true。
            "editCommentAuthorOnly": true, //定义用户是否只能编辑他的评论。默认值为false。
            "deleteCommentAuthorOnly": true //定义用户是否只能删除他的评论。默认值为false。
          }
        },
        "type": "text",
        "editorConfig": {
          "createUrl": createUrl, //指定创建文件的页面,添加该配置后文档服务器插件才会显示新建文件按钮
          "mode": "edit", //文档操作模式 view 视图模式不可编辑  edit 编辑模式可编辑文档
          "callbackUrl": callbackUrl,
          "lang": "zh-CN", //语言环境
          "customization": { //定制部分允许自定义编辑器界面，使其看起来像您的其他产品，并更改是否存在其他按钮，链接，更改徽标和编辑者所有者详细信息
            "help": true, //定义是显示还是隐藏“帮助”菜单按钮。默认值为true。
            "hideRightMenu": false, //定义在第一次加载时是显示还是隐藏右侧菜单。默认值为false。
            "autosave": true, //定义是启用还是禁用“自动保存”菜单选项。请注意，如果您在菜单中更改此选项，它将被保存到浏览器的localStorage中。默认值为true。
            "forcesave": true, //定义保存按钮是否显示默认false
            //"chat": false, //定义“聊天”菜单按钮是显示还是隐藏；请注意，如果您隐藏“聊天”按钮，则相应的聊天功能也将被禁用。默认值为true。
            //"commentAuthorOnly": true, //定义用户是否只能编辑和删除他的评论。默认值为false。
            "comments": false, //定义是显示还是隐藏“评论”菜单按钮；请注意，如果您隐藏“评论”按钮，则相应的评论功能将仅可用于查看，评论的添加和编辑将不可用。默认值为true。
            "compactHeader": true, //定义是否将菜单栏放在在徽标旁边使界面更加紧凑默认false。
            "compactToolbar": false, //定义显示的顶部工具栏类型是完整（false）还是紧凑true。默认值为false 多余菜单将在右侧折叠点击显示。
            "compatibleFeatures": false, //定义仅与OOXML格式兼容的功能的使用。例如，不要在整个文档上使用注释。默认值为false。
            "macros": true, //定义是否将运行文档宏以及可用的宏设置。默认值为true。
            "macrosMode": "warn", //定义是否将运行文档宏。可以采用以下值： disable -根本不运行；enable -自动运行所有宏；warn -警告宏并请求允许运行。默认值为original。
            "plugins": true, //定义是否将启动插件并可用。默认值为true。
            "review": true, //定义在加载编辑器时是否自动显示或隐藏审阅更改面板。默认值为false。
            "features": false, //定义在加载编辑器时是否自动打开或关闭拼写检查器。拼写检查器仅适用于文档编辑器和演示文稿编辑器。默认值为true。
            "toolbarNoTabs": true, //定义是突出显示顶部工具栏选项卡样式。默认值为false。
            "unit": "cm", //定义在标尺和对话框中使用的度量单位。可以采用以下值：cm -厘米，pt-点，inch -英寸。默认值为厘米（cm）。
            "zoom": 100, //定义以百分比为单位的文档显示缩放值。可以取大于0的值。对于文本文档和演示文稿，可以将此参数设置为-1（使文档适合页面选项）或-2（使文档页面宽度适合编辑器页面）。默认值为100。
            "customer": { //关于 文档编辑器的显示信息
              "address": "广东-深圳 425700", //有权访问编辑或编辑作者的公司或个人的邮政地址
              "info": "Some additional information", //有关您希望其他人认识的公司或个人的一些其他信息
              "logo": logoUrl, //图片徽标的路径（此文件没有特别建议，但是如果使用透明背景的.png格式会更好）。图片必须具有以下尺寸：432x70，
              "mail": "2510043259@qq.com", //有权访问编辑者或编辑者的公司或个人的电子邮件地址
              "name": "欧阳锋", //该公司或个人的谁可以访问编辑或编辑作者，名称
              "www": "http://192.168.1.25:17007/swagger-ui.html" //以上公司或个人的家庭网站地址，
            },
            "feedback": { //反馈配置信息
              "url": "http://192.168.1.25:17007/swagger-ui.html", //单击“反馈和支持”菜单按钮时将打开的网站地址的绝对URL ，
              "visible": true //显示或隐藏“反馈和支持”菜单按钮，
            },
            "goback": { //定义“打开文件位置”菜单按钮和右上角按钮的设置。该对象具有以下参数：
              "blank": true, //在新的浏览器选项卡/窗口（如果值设置为true）或当前选项卡（如果值设置为false）中打开网站。默认值为true，
              "requestClose": false, //定义如果单击“打开文件位置”按钮，则调用events.onRequestClose事件，而不是打开浏览器选项卡或窗口。默认值为false，
              "text": "打开文件位置", //将在“打开文件位置”菜单按钮和右上角按钮（即，而不是“转到文档”）上显示的文本，
              "url": "http://192.168.1.25:17007/swagger-ui.html" //单击“打开文件位置”菜单按钮时将打开的网站地址的绝对URL ，
            },
            "logo": {
              "image": logoUrl, //图像文件的路径，用于在普通工作模式下显示（即，在所有编辑器的查看和编辑模式下）。图片必须具有以下尺寸：172x40，
              "imageEmbedded": logoUrl, //用于以嵌入式模式显示的图像文件的路径（请参阅config部分以了解如何定义嵌入式文档类型）。图片必须具有以下尺寸：248x40，
              "url": "https://www.baidu.com" //某人单击徽标图像时将使用的绝对URL（可用于转到您的网站等）。保留为空字符串或null以使徽标不可单击，
            },
          },
          "user": { //用户信息
            "id": "78e1e841", //用户ID
            "name": "洪七公" //用户全名称
          }
        },
        "events": { //事件配置
          // onAppReady,//-将应用程序加载到浏览器时调用的函数。
          // onCollaborativeChanges //-当文档由其他用户在严格共同编辑模式下共同编辑时调用的函数。
          // onDocumentReady,//-将应用程序加载到浏览器时调用的函数。
          // onDocumentStateChange,//-修改文档时调用的函数。这就是所谓的使用参数：{真正的“数据”}在当前用户编辑文档以及与参数：{“数据”：假}在当前用户的更改发送到文档编辑服务。
          // onDownloadAs,//-调用downloadAs方法时，使用指向已编辑文件的绝对URL调用的函数。在data参数中发送要下载的文档的绝对URL 。
          // onError,//-发生错误或其他特定事件时调用的函数。错误消息在data参数中发送。
          // onInfo,//-应用程序打开文件时调用的函数。该模式在data.mode参数中发送。可以查看或编辑。
          // onMetaChange,//-通过meta命令更改文档的元信息时调用的函数。文档名称通过data.title参数发送。
          // onOutdatedVersion,//-使用旧的document.key值打开文档进行编辑时，显示错误后调用的函数，该值用于编辑先前的文档版本并已成功保存。调用此事件时，必须使用新的document.key重新初始化编辑器。
          // onReady,//-将应用程序加载到浏览器时调用的函数。自从5.0版本不推荐使用，请使用onAppReady代替
          // onRequestClose,//-结束编辑器的工作并且必须关闭编辑器时调用的函数。
          // onRequestCompareFile,//-用户尝试通过单击“存储中的文档”按钮来选择要比较的文档时调用的函数。要选择要比较的文档，必须调用setRevisedFile方法。如果未声明该方法，则不会显示“来自存储的文档”按钮。
          // onRequestCreateNew,//-用户尝试通过单击“新建”按钮来创建文档时调用的函数。使用此方法代替createUrl字段。如果未声明该方法且未指定createUrl，则将不会显示“创建新”按钮。
          // onRequestEditRights,//-用户尝试通过单击“编辑文档”按钮尝试将文档从视图切换到编辑模式时调用的函数。调用该函数时，必须在编辑模式下再次初始化编辑器。如果未声明该方法，则不会显示“编辑”按钮。
          onRequestHistory: onRequestHistory, //-用户尝试通过单击“版本历史记录”按钮显示文档版本历史记录时调用的函数。要显示文档版本历史，您必须调用refreshHistory方法。如果未声明该方法和onRequestHistoryData方法，则不会显示“版本历史记录”按钮。
          onRequestHistoryClose: onRequestHistoryClose, //-当用户尝试通过单击“关闭历史记录”按钮来查看文档版本历史记录时，试图调用该文档时调用的函数。调用该函数时，必须在编辑模式下再次初始化编辑器。如果未声明该方法，则不会显示“关闭历史记录”按钮。
          onRequestHistoryData: onRequestHistoryData, //-用户尝试单击文档版本历史记录中的特定文档版本时调用的函数。
          // onRequestInsertImage,//-用户尝试通过单击“保存图像”按钮插入图像时调用的函数。图像插入的类型在参数data.c中指定。
          // onRequestRename,//-用户尝试通过单击“重命名...”按钮重命名文件时调用的函数。
          // onRequestRestore,//-用户单击版本历史记录中的“还原”按钮来还原文件版本时调用的函数。
          // onRequestSaveAs,//-用户尝试通过单击“另存为...”按钮保存文件时调用的函数。文档的标题和要下载的文档的绝对URL在data参数中发送。如果未声明该方法，则不会显示“另存为...”按钮。
          // onRequestSharingSettings,//-用户单击“更改访问权限”按钮来管理文档访问权限时调用的函数。必须调用setSharingSettings方法来更新有关允许与其他用户共享文档的设置的信息。如果未声明该方法，则不会显示“更改访问权限”按钮。
          // onRequestUsers,//-评论者可以选择要在评论中提及的其他用户时调用的函数。要设置用户列表，必须调用setUsers方法。
          // onWarning,//-发生警告时调用的函数。警告消息在data参数中发送。
          // "onDocumentStateChange": onDocumentStateChange, //文档改变后的回调
          // "onDocumentReady": onDocumentReady, //文档初始化准备好后的回调
        }
      }
      var docEditor = new DocsAPI.DocEditor("placeholder", config);
    </script>
  </body>
</html>
